home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NOVA - For the NeXT Workstation
/
NOVA - For the NeXT Workstation.iso
/
SourceCode
/
AdobeExamples
/
NX_Clock
/
ClockView.h
< prev
next >
Wrap
Text File
|
1992-12-19
|
4KB
|
166 lines
/*
* (a) (C) 1990 by Adobe Systems Incorporated. All rights reserved.
*
* (b) If this Sample Code is distributed as part of the Display PostScript
* System Software Development Kit from Adobe Systems Incorporated,
* then this copy is designated as Development Software and its use is
* subject to the terms of the License Agreement attached to such Kit.
*
* (c) If this Sample Code is distributed independently, then the following
* terms apply:
*
* (d) This file may be freely copied and redistributed as long as:
* 1) Parts (a), (d), (e) and (f) continue to be included in the file,
* 2) If the file has been modified in any way, a notice of such
* modification is conspicuously indicated.
*
* (e) PostScript, Display PostScript, and Adobe are registered trademarks of
* Adobe Systems Incorporated.
*
* (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO
* CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED
* AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED.
* ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY
* OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO
* WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY)
* WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY
* DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT
* OF THIRD PARTY RIGHTS.
*/
/*
* ClockView.h
*
* This class handles the drawing of the clock and the moving of the alarm.
* The clock face is drawn into a bitmap and then composited into the buffered
* window before drawing the hands. The hands are stored in the server
* as user paths. Each hand also has a graphic state associated with it. Before
* hand is drawn, its graphic state is installed and then rotated to its current
* angle and then the user path is rendered.
*
* Most of the literals below are for drawing the clock face and the hands.
*
* Version: 2.0
* Author: Ken Fromm
* History:
* 03-07-91 Added this comment.
*/
#import <appkit/View.h>
#import <appkit/timer.h>
#import <math.h>
#define CLRVIEW 0.01
#define CLRCIRC NX_BLACK
#define SIZENUMS 0.75
#define SIZEDASHES 0.90
#define WIDMIN 3.5
#define CLRMIN NX_WHITE
#define LENMIN (19.0/20.0)
#define DEGMIN (-6.0)
#define WIDHOUR 6.0
#define CLRHOUR NX_WHITE
#define LENHOUR (14.0/15.0)
#define DEGHOUR (-30.0)
#define CLRHANDS NX_WHITE
#define CLRSECOND NX_LTGRAY
#define CLRSHADOW 0.20
#define CLRALARMTOP 0.8
#define CLRALARMBOT NX_DKGRAY
#define LNWIDSECOND 1.0
#define LNWIDHANDS 3.0
#define OFFSETHANDSX 1.0
#define OFFSETHANDSY (-1.0)
#define OFFSETSHADX 2.0
#define OFFSETSHADY (-2.0)
#define TICKSEC (-360.0/60.0)
#define TICKMIN (TICKSEC/60.0)
#define TICKHOUR (TICKMIN/12.0)
#define MAX_PTS 300
#define MAX_OPS 150
#define MAX_PTS_HIT 12
#define MAX_OPS_HIT 6
#define HITSETTING 8
#define RADIAN (M_PI/180)
#define ALARM 0
#define HOUR 1
#define MINUTE 2
#define SHADOW 3
#define SECOND 4
/*
* This structure is used to hold the hit detection user path.
* The infill operator is used which takes a user path and checks
* to see whether any portion of it is covered by the
* current path. The user path passed in is a rectangle around
* the mouse down location. The current path is the alarm hand.
*/
typedef struct _UPath {
float * pts;
int num_pts;
char *ops;
int num_ops;
} UPath;
/*
* The BOOL arguments specify whether to use gstates or not and
* whether to use the userpaths stored in the server or send them
* with each drawing.
*/
@interface ClockView:View
{
id animatorId, imageId, displayTime;
BOOL gstatesOn, upathsServer, trace;
int gstateHour, gstateMin, gstateSec, gstateShad,
upathHour, upathMin, upathSec, upathAlarmTop, upathAlarmBot;
float angleHour, angleMin, angleSec, angleAlarm,
totalTime, numIterations;
UPath hitPoint;
}
- initFrame:(const NXRect *) frameRect;
- initializeHitPoint;
- free;
- setDisplayTime:anObject;
- toggleGstate:sender;
- toggleUpath:sender;
- drawFace;
- defineUPaths;
- defineGStates;
- tick:sender;
- sizeTo:(NXCoord)width :(NXCoord)height;
- setAlarm:(NXEvent *)event;
- setHitPoint:(const NXPoint *)p;
- (BOOL) isHit:(const NXPoint *) p;
- mouseDown:(NXEvent *)event;
- setStateAndDraw;
- drawSelf:(NXRect *)r :(int) count;
@end